26 research outputs found
Teaching Design Patterns Using Interactive Methods
Even though design patterns are one of the most important building blocks in the current software engineering ecosystem, computer science and software engineering graduates face trouble applying these patterns. To address this, we propose a tutorial and an online lab assessment method to solidify the idea of design patterns for students. The tutorial part integrates a live coding session. The online lab assessment consists of a three-stage process (designing a solution using a class diagram, peer review, and implementation) where students are expected to come up with a fully working solution using design patterns. The proposed approach is applied twice over two semesters to a total sum of 196 students. We discuss the effects of these interactive educational methods on learning by comparing pre-surveys, post-surveys and analyzing final grades. The analysis of the surveys shows that live coding is highly beneficial in enhancing the understanding of design patterns
Closing the gap between software engineering education and industrial needs
According to different reports, many recent software engineering graduates
often face difficulties when beginning their professional careers, due to
misalignment of the skills learnt in their university education with what is
needed in industry. To address that need, many studies have been conducted to
align software engineering education with industry needs. To synthesize that
body of knowledge, we present in this paper a systematic literature review
(SLR) which summarizes the findings of 33 studies in this area. By doing a
meta-analysis of all those studies and using data from 12 countries and over
4,000 data points, this study will enable educators and hiring managers to
adapt their education / hiring efforts to best prepare the software engineering
workforce
Evaluating the Code Quality of AI-Assisted Code Generation Tools: An Empirical Study on GitHub Copilot, Amazon CodeWhisperer, and ChatGPT
Context: AI-assisted code generation tools have become increasingly prevalent
in software engineering, offering the ability to generate code from natural
language prompts or partial code inputs. Notable examples of these tools
include GitHub Copilot, Amazon CodeWhisperer, and OpenAI's ChatGPT.
Objective: This study aims to compare the performance of these prominent code
generation tools in terms of code quality metrics, such as Code Validity, Code
Correctness, Code Security, Code Reliability, and Code Maintainability, to
identify their strengths and shortcomings.
Method: We assess the code generation capabilities of GitHub Copilot, Amazon
CodeWhisperer, and ChatGPT using the benchmark HumanEval Dataset. The generated
code is then evaluated based on the proposed code quality metrics.
Results: Our analysis reveals that the latest versions of ChatGPT, GitHub
Copilot, and Amazon CodeWhisperer generate correct code 65.2%, 46.3%, and 31.1%
of the time, respectively. In comparison, the newer versions of GitHub CoPilot
and Amazon CodeWhisperer showed improvement rates of 18% for GitHub Copilot and
7% for Amazon CodeWhisperer. The average technical debt, considering code
smells, was found to be 8.9 minutes for ChatGPT, 9.1 minutes for GitHub
Copilot, and 5.6 minutes for Amazon CodeWhisperer.
Conclusions: This study highlights the strengths and weaknesses of some of
the most popular code generation tools, providing valuable insights for
practitioners. By comparing these generators, our results may assist
practitioners in selecting the optimal tool for specific tasks, enhancing their
decision-making process
An Interactive Approach to Teaching Git Version Control System
Although the Git version control system is widely used in software engineering, it has been observed that most Computer Science and Software Engineering students do not have the necessary knowledge and practices to use Git. To address this issue, we have prepared a Git and GitHub training program consisting of four sessions as a part of the Object-Oriented Software Engineering course where junior students utilized these tools for their term projects. The program was conducted in three academic terms for a total of 258 students. To evaluate the effectiveness of the training sessions, we have conducted two surveys, before (224 respondents) and after (200 respondents) the program. According to the survey results, the number of students considering themselves insufficient to use the tools for their projects decreased from 67% to 9% after the training program. Additionally, the majority of the students found the lectures and laboratory assignments beneficial
Examining reward mechanisms for effective usage of application lifecycle management tools
Application lifecycle management (ALM) highlights the rules of the road for the entire software ecosystems’ lifecycle. Successful ALM enables clarity around the entire delivery effort, from defining requirements to deploying the software product. One of the challenges in software engineering today is to orchestrate ALM tools to a set of software projects effectively. In particular, it is challenging for software practitioners to continuously fully engage with the tasks that are assigned to them. The goal of this study is to address such situations using a game theoretic approach by utilizing a reward mechanism, which we intent to test in a medium-sized software development organization. Based on a set of game elements, this study proposes an auction mechanism to address human resource allocation and task optimization issues, and consequently tackle the potential problem of software practitioners’ engagement
An auction-based serious game for bug tracking
Today, one of the challenges in software engineering is utilizing application lifecycle management (ALM) tools
effectively in software development. In particular, it is hard for software developers to engage with the work items that are
appointed to themselves in these ALM tools. In this study, we have focused on bug tracking in ALM where one of the most
important metrics is mean time to resolution that is the average time to fix a reported bug. To improve this metric, we
developed a serious game application based on an auction-based reward mechanism. The ultimate aim of this approach is
to create an incentive structure for software practitioners to find and resolved bugs that are auctioned where participants
are encouraged to solve and test more bugs in less time and improve quality of software development in a competitive
environment. We conduct hypothesis tests by performing a Monte Carlo simulation. The preliminary results of this research
support the idea that using a gamification approach for an issue tracking system enhances the productivity and decreases
mean time to resolution
Manipulating multiple sequence alignments via MaM and WebMaM
MaM is a software tool that processes and manipulates multiple alignments of genomic sequence. MaM computes the exact location of common repeat elements, exons and unique regions within aligned genomics sequences using a variety of user identified programs, databases and/or tables. The program can extract subalignments, corresponding to these various regions of DNA to be analyzed independently or in conjunction with other elements of genomic DNA. Graphical displays further allow an assessment of sequence variation throughout these different regions of the aligned sequence, providing separate displays for their repeat, non-repeat and coding portions of genomic DNA. The program should facilitate the phylogenetic analysis and processing of different portions of genomic sequence as part of large-scale sequencing efforts. MaM source code is freely available for non-commercial use at ; and the web interface WebMaM is hosted at
Yazılım ürün hattı mühendisliğine geçiş için bir karar destek modeli.
The software product line engineering (SPLE) community has provided several different approaches for assessing the feasibility of SPLE adoption and selecting transition strategies. These approaches usually include many rules and guidelines which are very often implicit or scattered over different publications. Hence, for the practitioners it is not always easy to select and use these rules to support the decision-making process. To support the decision-making process in SPLE adoption, a decision support model is introduced for pursuing SPLE transition. A prototype tool, Transit-PL is developed after a domain analysis study on the feasibility analysis approaches and SPLE transition strategies in the literature. The decision support model has been developed and enhanced through exploratory case studies, and then further validated in both literature-based retrospective case studies and real life prospective case studies. The multiple case study validation showed that proposed decision support model has a clear impact on the decision-making process in SPLE adoption.Ph.D. - Doctoral Progra
Sentez Tabanlı Yazılım Mimarisi Tasarım Yaklaşımının Essence Çerçevesiyle Modellenmesi
Software architecture design is a pivotal yet a difficult phase in software development process. It is important to manage conflicting goals of the stakeholders and derive architectural abstractions from the relevant requirements. Moreover, it is significant to produce semantically rich artifacts based on the existing solution domain knowledge. Resulting architectural artifacts guides the rest of the software development process and facilitates planning. Recently the Essence framework has been proposed to provide an abstract and general view of software engineering on which software development methods and activities can be mapped. In this work, a mapping of the synthesis-based software architecture design activities to the Essence framework is presented. By doing so, these activities are explained using an abstract and general model of software engineering. Moreover, a state-based activity tracking mechanism for synthesis-based software architecture design activities is proposed. The lessons learnt about the Essence framework and the synthesis-based architecture design approach are reported